package com.project.springboot.singleton;

/**
 * description: 懒汉式(线程安全) --- 双重检查加锁
 * @author 朱正磊
 * @date 2021-03-03 15:50:34
 */
public class Singleton2 {

    // 使用关键字volatile修饰成员变量，确保所有线程所看到的指定变量的值都是相同的
    private volatile static Singleton2 instance = null;

    // 私有化构造方法
    private Singleton2() {

    }

    // 提供一个公有的静态方法，返回实例对象
    public static Singleton2 newInstance() {
        if (instance == null) {
            synchronized (Singleton2.class) {
                if (instance == null) {
                    instance = new Singleton2();
                }
            }
        }
        return instance;
    }

}
